/* 数据库连接，采用连接池 */
const mysql = require("mysql");
module.exports = {
  // 数据库配置
  config: {
    host: "localhost",
    port: "3306",
    user: "root",
    password: "root",
    database: "node_express_server",
  },
  // 连接数据库，连接池 连接mysql
  // 连接池对象， 连接池的优点等数据量较大时查询速度较快
  sqlConnect: function (sql, sqlArr, callBack) {
    var pool = mysql.createPool(this.config);
    pool.getConnection((err, conn) => {
      if (err) {
        console.error("连接失败");
        return;
      }
      // 事件驱动回调
      conn.query(sql, sqlArr, callBack);
      // 释放连接
      conn.release();
    });
  },

  // promise 回调（异步）
  SySqlConnect: function (sySql, sqlArr) {
    return new Promise((resolve, reject) => {
      let pool = mysql.createPool(this.config);
      pool.getConnection((err, conn) => {
        if (err) {
          reject(err);
        } else {
          // 事件驱动回调
          conn.query(sySql, sqlArr, (err, data) => {
            if (err) {
              reject(err);
            } else {
              resolve(data);
            }
          });
          // 释放连接
          conn.release();
        }
      });
    }).catch((err) => {
      console.error(err);
    });
  },
};
